package cn.t.dto.api;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author l
 */
@Data
public class ProductDTO implements Serializable {
    /**
     * 产品名称
     */
    private String itemName;
    /**
     * 产品Code
     */
    private String productCode;
    /**
     * 产品Code
     */
    private String productName;
    /**
     * 品牌
     */
    private String brandName;
    /**
     * 品牌code
     */
    private String brandCode;
    /**
     * 一级分类code
     */
    private String categoryCode1;
    /**
     * 一级分类名称
     */
    private String categoryName1;
    /**
     * 4级分类code
     */
    private String categoryCode;
    /**
     * 制造商型号
     */
    private String mfgSku;
    /**
     * 计价规格
     */
    private String packContent;
    /**
     * 包装规格(根据包装单位计算)
     */
    private String packageContent;
    /**
     * 图片
     */
    private List<ImageDTO> itemPictures;
    /**
     * 库存
     */
    private Integer stock;
    /**
     * 最小起订量
     */
    private Integer moqSales;
    /**
     * 加购增幅
     */
    private Integer moqIncrement;
    /**
     * 实际发货天数
     */
    private String deliveryDay;
    /**
     * 预计发货天数
     */
    private String estimateDay;
    /**
     * 业务国类型  20代表FA
     */
    private Integer businessCountryType;
    /**
     * 是否直送品
     */
    private Integer directDeliveryFlag;
    /**
     * 销售状态
     */
    private Integer salesStatus;
    /**
     * 客户号
     */
    private String customerCode;
    /**
     * 标签
     */
    private List<String> tags;
    /**
     * 上下架 1上架 0下架
     */
    private Integer onShelf;
    /**
     * 计价单位（销售单位）
     */
    private String chargeUnitName;
    /**
     * 面价
     */
    private BigDecimal price;
    /**
     * 1,2,3,4级分类
     */
    private  List<CategoryDTO> categories;
    /**
     * 是否可以退换货
     */
    private Integer noReturn;
    /**
     * pms 商品状态
     */
    private Integer bizStatus;
    /**
     * 备货类型 1: 备货  0: 非备货
     */
    private Integer stockType;
    /**
     * 含物理单位个数
     */
    private Integer physicalUnitQty;
    /**
     * 分类名称
     */
    private String categoryName;
    /**
     *供应商可换货 是否不可换货 1-不可换货, 0-可换货
     */
    private Integer noExchange;
    /**
     * 物理单位名称
     */
    private String physicalUnitName;
    /**
     * 订制品标识 1-是  0-否
     */
    private Integer customizedFlag;
    /**
     * 渠道控制信息
     */
    private List<ChannelInfoDTO> channelInfo;
    /**
     * 交期展示内容
     */
    private String deliveryDayContent;
    /**
     * 商品是否可见
     */
    private Boolean visible;
    /**
     * 客户退换货
     */
    private String customerReturns;
    /**
     * 物料号
     */
    private String itemCode;
    /**
     * 客户物料号
     */
    private String customerItemCode;
    /**
     * 客户物料名称
     */
    private String customerItemName;
    /**
     * 物料类型 10 目录品，30 准目录品， 40 定制品， 50 进口品， 60 复杂品， 20 FA
     */
    private Integer itemType;

    @Getter
    @Setter
    public static class ImageDTO implements Serializable {
        /**
         * 图片路径
         */
        private String url;
        /**
         * 排序
         */
        private Integer sort;
    }

    @Getter
    @Setter
    public static class CategoryDTO implements Serializable{
        /**
         * 分类编码
         */
        private String categoryCode;
        /**
         * 分类名称
         */
        private String categoryName;
        /**
         * 分类层级
         */
        private Integer level;
    }

    @Getter
    @Setter
    public static class ChannelInfoDTO implements Serializable {
        /**
         * 渠道
         */
        private String channel;
        /**
         * 上下架 true-上架, false-下架
         */
        private Boolean online;
    }
}
